package com.zyn.inventory.management.dao;


import java.util.List;

import com.zyn.inventory.management.entities.User;
import com.zyn.inventory.management.utils.Page;

public interface UserDetailsDao extends BaseDao<User> {

    /**
     * @return List of all User entities
     */
    List<User> getAll();

    List<User> get(List<Long> ids);

    /**
     * @param email String - email address for the User
     * @return User with the given email address
     */
    User findByEmail(String email);

    /**
     * @param userName String
     * @return User with the given user name
     */
    User findByUserName(String userName);

    /**
     * @param ids a List of primary keys for which we want to retrieve all Users
     * @return List of all User entities matching the set of IDs
     */
    List<User> getBatch(List<Long> ids);

    /**
     * @return long - a count of all the users in the system
     */
    long countAll();

	List<User> searchByEmail(String email);

	Page<User> queryPage(Integer page);
}
